import "jweixin-module";

declare global {
  interface Window {
    /** WeixinJSBridge */
    WeixinJSBridge: Record<string, any>;
  }
}

interface Options {
  appId: string;
  timeStamp: string;
  nonceStr: string;
  paySign: string;
  package: string;
  signType: string;
}

export default function wxPay(options: Options) {
  return new Promise(resolve => {
    window.WeixinJSBridge.invoke(
      "getBrandWCPayRequest",
      {
        appId: options.appId, // 公众号appid： wx9d51a9e851b3dc67
        timeStamp: options.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
        nonceStr: options.nonceStr, // 支付签名随机串，不长于 32 位
        package: options.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
        signType: options.signType, // 签名类型 - HMAC-SHA256
        paySign: options.paySign // 支付签名
      },
      (res: any) => {
        if (res.err_msg === "get_brand_wcpay_request:ok") {
          resolve("success");
        } else if (
          res.err_msg === "get_brand_wcpay_request:cancel" ||
          res.err_msg === "get_brand_wcpay_request:fail"
        ) {
          resolve("fail");
          uni.showToast({
            title: "支付失败",
            icon: "error"
          });
        }
      }
    );
  });
}
